iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
1
Google Developers Machine Learning

ML Study Jam -機器學習系列 第 15

Day 15 Estimator API part 1 (來試試TensorFlow內的Estimator API)

  • 分享至 

  • xImage
  •  

Intro to TensorFlow

Estimator API part 1

Qwiklabs – Lab Estimator API

接著介紹Estimator API(Qwiklabs – Lab Estimator API),這次的實驗室主要的目標是希望Estimator API建構出AI的模型、並且能透過checkpoint來做儲存的動作即使訓練途中中斷或是有問題將能夠依照checkpoint繼續做訓練;一樣先創建notebooks接著切換至training-data-analyst > courses > machine_learning > deepdive > 03_tensorflow > labs 打開b_estimator.ipynb,開始進行實驗

  1. 一樣先引入所需的套件

  2. 接著載入所需的資料集

    • 這邊使用之前蒐集的計程車的資料集,其中包含費用、上下車經緯度、乘客人數等都是這次要訓練的特徵。
    • 利用 pandas讀取csv檔案read_csv('路徑',header,name)
  3. 定義訓練集、驗證集、預測集的各種參數

    • 這邊比較不一樣的是訓練集資料會先做shuffle的動作,以防資料特徵過於集中
    • 然後測試集因為是要預測y所以這邊是定義為None,接著定義輸入的特徵

https://ithelp.ithome.com.tw/upload/images/20190916/20120289VQMa0a3fQx.png

  1. 開始做訓練
    • 首先設定輸出資料夾用來存放checkpoint以及其他資料輸出,接著引入estimator的LinearRegressor模型,直接針對線性回歸來做訓練,最後開始將訓練資料放入跑10個epochs,最終得到final loss與儲存checkpoint。

https://ithelp.ithome.com.tw/upload/images/20190916/20120289IKVYiUCirf.pnghttps://ithelp.ithome.com.tw/upload/images/20190916/20120289QdTmyaZADP.jpg

  1. 將訓練結果與驗證數據做比較
    -利用evaluate函數來球的metrics,可得到訓練的RMSE是否過高,來檢驗是否需要重新訓練。
    https://ithelp.ithome.com.tw/upload/images/20190916/20120289jnW3jNiu7A.png

  2. 接著將模型進行預測使用沒有labels的測試資料集

    • 這邊可以直接使用model.predict(input_data)可以求得利用此模型預測出來的labels結果是多少。
      https://ithelp.ithome.com.tw/upload/images/20190916/20120289QnZtraI4cP.png
  3. 在這邊用了另外一種架構DNNRegressor

    • 利用DNN的概念加入隱藏層來做運算,並且訓練的epochs調至100,最後儲存checkpoint外也將其與驗證集做比較。

https://ithelp.ithome.com.tw/upload/images/20190916/20120289rZRaRn5pkz.pnghttps://ithelp.ithome.com.tw/upload/images/20190916/20120289weYQMvIRR3.png

  1. 最後我們在前幾堂課的數據集透過bigquery的方式做篩選與結果做比較
    • 可以發現RMSE大約在9.45,雖然實驗結果不是很好之後會針對這些條件來做該善。
      https://ithelp.ithome.com.tw/upload/images/20190916/20120289rBoZL7rU9w.png

Qwiklabs – Scaling up TensorFlow ingest using batching

這次的實驗(Qwiklabs – Scaling up TensorFlow ingest using batching)最主要想要達到的目標是資料集非常的大需要批次去處理,那dataset API是一個非常好的選擇。一樣先創建notebooks接著切換至training-data-analyst > courses > machine_learning > deepdive > 03_tensorflow > labs 打開c_dataset.ipynb,開始進行實驗。

  1. 一樣先引入所需的套件。

  2. 接著我們希望使用dataset API

    • 首先第一步要利用data.Dataset.list_files來讀取在資料夾中的所有檔案
    • 接著利用flat_map(tf.data.TextLineDataset) 將所有檔案內的資料轉換成文字檔
    • 利用map函數將資料解碼成csv檔,若是訓練資料就要進行shuffle,接著利用設定的buffer_size批次處理,完成讀取多個data的動作。

https://ithelp.ithome.com.tw/upload/images/20190916/20120289VWZ29znsNZ.png

  1. 接著選取要做為訓練使用的特徵,並且利用上述的方法開始做訓練的動作
    • 同時去驗證model的RMSE值來做為評判標準。
INPUT_COL = [
    tf.feature_column.numeric_column('選取資料')....
]
def add_more_features(feats):
    return feats
frature_cols = add_more_features(INPUT_COL)

https://ithelp.ithome.com.tw/upload/images/20190916/20120289JLhyRIPtcz.png


上一篇
Day 14 Core TensorFlow part 2 (TensorFlow 實做)
下一篇
Day 16 Estimator API part 2 (Estimator API 第二彈)
系列文
ML Study Jam -機器學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言